package com.hsgene.order.persistence;

import com.hsgene.common.util.support.LimitHelper;
import com.hsgene.common.util.support.OrderHelper;
import com.hsgene.order.condition.OrderRefundCondition;
import com.hsgene.order.domain.v1.GeneticTestingOrderRefund;
import com.hsgene.order.dto.console.OrderRefundDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 订单退款Repository
 *
 * @author wangbing
 * @version 1.0, 2018/11/12
 */
@Repository
public interface OrderRefundRepository {

    /**
     * 保存退款信息
     *
     * @param refund 退款信息
     */
    void save(@Param("refund") GeneticTestingOrderRefund refund);

    /**
     * 查询符合条件的退款申请数量
     *
     * @param condition 查询条件
     * @return 数量
     */
    int queryRefundCount(@Param("condition") OrderRefundCondition condition);

    /**
     * 查询符合条件的退款申请列表
     *
     * @param condition   查询条件
     * @param orderHelper 排序参数
     * @param limitHelper 分页参数
     * @return 退款申请列表
     */
    List<OrderRefundDto> queryRefund(
            @Param("condition") OrderRefundCondition condition,
            @Param("orderHelper") OrderHelper orderHelper,
            @Param("limitHelper") LimitHelper limitHelper);

    /**
     * 查询指定id的退款申请
     *
     * @param id 退款申请id
     * @return 退款申请信息
     */
    GeneticTestingOrderRefund findById(@Param("id") String id);

    /**
     * 更新退款信息
     *
     * @param refund 退款信息
     */
    void updateRefund(@Param("refund") GeneticTestingOrderRefund refund);

    /**
     * @param orderId 订单id
     * @return java.util.List<com.hsgene.order.domain.v1.GeneticTestingOrderRefund>
     * @description 查询退款审批记录
     * @author maodi
     * @createDate 2018/11/27 11:21
     */
    List<GeneticTestingOrderRefund> queryOrderRefundDetails(@Param("orderId") String orderId);

    /**
     * 查询订单退款列表
     *
     * @param orderId 订单id
     * @return 退款列表
     */
    List<GeneticTestingOrderRefund> queryOrderRefunds(@Param("orderId") String orderId);
}
